home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1996-09-27 | 1.9 KB | 78 lines |
- DEFINITION MODULE DuDir;
-
- (* MODULE to read the directory of a current device or directory and
- place names/sizes into DirTable - also to Sort them in alphabetical
- order (case insensitive)
- *)
-
- FROM DOSFiles IMPORT FileLock;
- FROM Intuition IMPORT IntuitionText;
-
-
- CONST
- MaxMax = 300; (* Changing this allows more/less files *)
- (* eats mucho runtime memory 37 bytes ea *)
- (* 300 is enough even for my M2: dir *)
- TYPE
- DirInfo = RECORD
- FileName : ARRAY[0..30] OF CHAR;
- IsDir : BOOLEAN;
- IsSelected : BOOLEAN;
- WasSelected : BOOLEAN;
- FileSize : LONGCARD;
- END;
-
- DirPtr = POINTER TO DirInfo;
-
- VAR
- DirEntries : CARDINAL;
- FileText : IntuitionText;
-
- (* This table is full of pointers to allocated memory for storing
- directory entries *)
-
- DirTable : ARRAY[0..MaxMax] OF DirPtr;
- MaxFiles : CARDINAL;
-
- (*--------------------*)
-
-
- PROCEDURE ReadDirectory(lock:FileLock):BOOLEAN;
- (* Returns true if good read
-
- DirTable[0] contains the directory record and name.
- DirTable[1] - DirTable[DirEntries] contains filenames & other info *)
-
-
- (*------------*)
-
-
- PROCEDURE QSort;
- (* Sort the directory - DirEntries is top 1 is bottom *)
- (* Setup is bubble sort now - will change later *)
- (* Still - only 4 seconds for 230 files at that *)
-
- (*----------*)
- PROCEDURE MoveString(VAR tgt,src:ARRAY OF CHAR; po,le:CARDINAL);
- (* move max of 'le' chars of src to tgt[po] *)
- (* not including ending null *)
-
-
- PROCEDURE DisplayName(file,pos:CARDINAL);
-
-
- PROCEDURE DisplayFiles(ind:CARDINAL);
-
-
- PROCEDURE NewDir;
- (* Display a new directory *)
-
-
- PROCEDURE ClearTable;
- (* MUST call on exit from program to free DirTable memory used *)
-
- END DuDir.
-
-
-
-